جزوه · فصل هفتم · جلسه ۶۸ · مدیریت کاربران ← بازگشت به فهرست
📘 فصل هفتم · جلسه ۶۸ مدیریت کاربران در لینوکس
📅 تاریخ: یکشنبه، ۱ شهریور ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
مدیریت کاربران و گروه‌ها یکی از مهم‌ترین مباحث در LPIC و RHCSA است. تمام دستورات و مفاهیم این جلسه حتماً در آزمون می‌آیند.
👥 قبل از شروع، یه مثال ساده:

فرض کن مدیر یه شرکت هستی و چندین کارمند داری. باید برای هر کدوم یه **کارت شناسایی** (حساب کاربری) بدی، بهشون **دسترسی** بدی، **رمز عبور** بدن و حتی اگه دیگه کار نمیکنن، حسابشون رو **ببندی**. توی لینوکس هم دقیقاً همینطوره! این جلسه بهت یاد میده چطور کاربران رو مدیریت کنی، رمز عبور رو تغییر بدی، کاربر رو لاک کنی و حتی گروه‌ها رو مدیریت کنی.

▍ چرا باید کاربر جدید اضافه کنیم؟

دلایل اصلی برای اضافه کردن کاربران جدید در لینوکس:

⚠️ هشدار امنیتی:

هرگز با کاربر root کارهای روزمره را انجام ندهید. همیشه یک کاربر معمولی بسازید و فقط در مواقع ضروری از sudo استفاده کنید.

دلیل اصلی اضافه کردن کاربران: جلوگیری از استفاده مستقیم از کاربر root و افزایش امنیت سیستم.

▍ مفاهیم پایه: کاربر و گروه

در لینوکس، سطح دسترسی‌ها به کاربران اعمال می‌شود. هر کاربر در زمان ایجاد، عضو گروه اصلی (Primary Group) خود می‌شود (معمولاً گروهی با همان نام کاربر). همچنین کاربر می‌تواند عضو گروه‌های ثانویه (Secondary Groups) نیز باشد تا به منابع خاصی دسترسی پیدا کند.

🔑 نکته کلیدی:
  • گروه اصلی (Primary Group): گروهی که کاربر به طور پیش‌فرض عضو آن است. فایل‌های جدید با این گروه ایجاد می‌شوند.
  • گروه‌های ثانویه (Secondary Groups): گروه‌های دیگری که کاربر به آنها اضافه می‌شود تا دسترسی‌های بیشتری داشته باشد.

▍ مراحل اضافه کردن کاربر

فرآیند ایجاد یک کاربر جدید شامل مراحل زیر است:

🔹 مرحله ۱: فایل‌های تنظیمات پیش‌فرض

لینوکس از چند فایل برای تعیین تنظیمات پیش‌فرض کاربران جدید استفاده می‌کند:

  • /etc/default/useradd → تنظیمات پیش‌فرض دستور useradd
  • /etc/login.defs → تنظیمات مربوط به رمز عبور و سیاست‌های امنیتی
  • /etc/skel/ → فایل‌های پیش‌فرض که به دایرکتوری خانه کاربر کپی می‌شوند

• فایل /etc/login.defs

این فایل شامل تنظیمات مربوط به سیاست‌های رمز عبور و مدیریت کاربران است. برخی از پارامترهای مهم آن عبارتند از:

پارامتر توضیح
PASS_MAX_DAYS تعداد روزهایی که رمز عبور معتبر است (تاریخ انقضا)
PASS_MIN_DAYS حداقل تعداد روزهایی که باید از تغییر رمز عبور بگذرد تا بتوان دوباره آن را تغییر داد
PASS_MIN_LENGTH حداقل طول مجاز برای رمز عبور
PASS_WARN_AGE تعداد روزهایی که قبل از انقضای رمز عبور، به کاربر هشدار داده می‌شود
CREATE_HOME آیا دایرکتوری خانه برای کاربر ایجاد شود؟ (پیش‌فرض: no)
ENCRYPT_METHOD روش هش کردن رمز عبور (مثل SHA512)
پارامترهای /etc/login.defs در آزمون‌های امنیتی لینوکس بسیار مهم هستند.

• فایل /etc/default/useradd

این فایل تنظیمات پیش‌فرض دستور useradd را مشخص می‌کند. با دستور useradd -D می‌توانید این تنظیمات را مشاهده کنید:

┌──(ya3in㉿kali)-[~] └─$ useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no
با دستور useradd -D -s /bin/bash می‌توانید شل پیش‌فرض کاربران جدید را تغییر دهید.

• دایرکتوری /etc/skel/

این دایرکتوری شامل فایل‌های پیش‌فرضی است که هنگام ایجاد یک کاربر جدید، به دایرکتوری خانه او کپی می‌شوند. این فایل‌ها معمولاً شامل فایل‌های پیکربندی مانند .bashrc، .profile و .bash_logout هستند.

┌──(ya3in㉿kali)-[~] └─$ ls -la /etc/skel/ total 20 drwxr-xr-x 2 root root 4096 Aug 24 10:00 . drwxr-xr-x 3 root root 4096 Aug 24 10:00 .. -rw-r--r-- 1 root root 220 Aug 24 10:00 .bash_logout -rw-r--r-- 1 root root 3771 Aug 24 10:00 .bashrc -rw-r--r-- 1 root root 807 Aug 24 10:00 .profile

▍ فایل‌های ذخیره‌سازی اطلاعات کاربران

/etc/passwd

این فایل اطلاعات اولیه همه کاربران سیستم را ذخیره می‌کند. هر خط شامل ۷ فیلد است که با : از هم جدا شده‌اند:

┌──(ya3in㉿kali)-[~] └─$ head -3 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin

/etc/shadow

این فایل رمزهای عبور کاربران را به صورت هش‌شده ذخیره می‌کند. فقط کاربر root می‌تواند این فایل را بخواند.

┌──(ya3in㉿kali)-[~] └─$ sudo head -3 /etc/shadow root:$6$xyz...:19234:0:99999:7::: daemon:*:19234:0:99999:7::: bin:*:19234:0:99999:7:::
فایل /etc/shadow فقط توسط کاربر root قابل خواندن است و شامل رمزهای عبور هش‌شده است.

▍ مدیریت رمز عبور با passwd

دستور passwd برای تغییر رمز عبور کاربران، لاک کردن و آزاد کردن حساب‌های کاربری استفاده می‌شود.

• گزینه‌های مهم passwd

گزینه کوتاه گزینه بلند توضیح
-d --delete حذف رمز عبور کاربر (کاربر بدون رمز عبور می‌تواند وارد شود!)
-e --expire منقضی کردن رمز عبور (کاربر در ورود بعدی مجبور به تغییر رمز می‌شود)
-l --lock لاک کردن حساب کاربری (با گذاشتن ! جلوی رمز در /etc/shadow)
-u --unlock آزاد کردن حساب کاربری (حذف ! از /etc/shadow)
-S --status نمایش وضعیت رمز عبور کاربر
-n --minimum تنظیم حداقل روزهای بین تغییر رمز
-i --inactive تنظیم تعداد روزهای غیرفعال شدن پس از انقضای رمز
برای لاک کردن کاربر از passwd -l username و برای آزاد کردن از passwd -u username استفاده می‌شود.

• مثال‌های عملی passwd

┌──(ya3in㉿kali)-[~] └─$ sudo passwd -l ali passwd: password expiry information changed.

توضیح: کاربر ali لاک می‌شود و نمی‌تواند وارد سیستم شود.

┌──(ya3in㉿kali)-[~] └─$ sudo passwd -S ali ali L 08/24/2025 0 99999 7 -1

توضیح: وضعیت رمز عبور کاربر ali را نشان می‌دهد. L یعنی لاک شده (Locked).

┌──(ya3in㉿kali)-[~] └─$ sudo passwd -u ali passwd: password expiry information changed.

توضیح: کاربر ali آزاد (Unlock) می‌شود و می‌تواند دوباره وارد سیستم شود.

⚠️ توجه:

اگر رمز عبور کاربر را با passwd -d حذف کنید، کاربر بدون رمز عبور می‌تواند وارد سیستم شود. این کار بسیار خطرناک است! در چنین حالتی، حتماً کاربر را با passwd -l لاک کنید تا کسی نتواند وارد شود.

اگر رمز عبور کاربر را حذف کردید (passwd -d)، حتماً برای امنیت، کاربر را با passwd -l لاک کنید.

▍ مدیریت کاربران با usermod

دستور usermod برای تغییر مشخصات یک کاربر موجود استفاده می‌شود.

گزینه توضیح
-c تغییر فیلد GECOS (توضیحات کاربر)
-d /new/home -m تغییر دایرکتوری خانه و انتقال فایل‌ها به محل جدید
-e YYYY-MM-DD تنظیم تاریخ انقضای حساب کاربری
-g group تغییر گروه اصلی کاربر
-G group1,group2 تغییر گروه‌های ثانویه کاربر (با -a اضافه می‌کند)
-s /bin/bash تغییر شل پیش‌فرض کاربر
-L لاک کردن کاربر (معادل passwd -l)
-U آزاد کردن کاربر (معادل passwd -u)
برای اضافه کردن کاربر به یک گروه ثانویه بدون حذف گروه‌های قبلی، از usermod -aG groupname username استفاده کنید.

▍ حذف کاربر با userdel

برای حذف یک کاربر از سیستم از دستور userdel استفاده می‌شود.

┌──(ya3in㉿kali)-[~] └─$ sudo userdel -r ali

توضیح: -r دایرکتوری خانه و ایمیل کاربر را نیز حذف می‌کند.

برای حذف کامل کاربر به همراه دایرکتوری خانه و اسپول ایمیل، از userdel -r username استفاده کنید.

▍ مدیریت گروه‌ها

• ایجاد گروه با groupadd

┌──(ya3in㉿kali)-[~] └─$ sudo groupadd -g 1042 Project42

توضیح: ایجاد گروه Project42 با GID 1042.

• اضافه کردن کاربر به گروه

┌──(ya3in㉿kali)-[~] └─$ sudo usermod -aG Project42 ali

توضیح: کاربر ali به گروه Project42 اضافه می‌شود (بدون حذف گروه‌های قبلی).

✅ جمع‌بندی نهایی برای امتحان:
  • ایجاد کاربر: useradd username
  • تغییر رمز: passwd username
  • لاک کردن: passwd -l username
  • آزاد کردن: passwd -u username
  • حذف رمز: passwd -d username (خطرناک! حتماً لاک کنید)
  • تغییر مشخصات: usermod -options username
  • حذف کاربر: userdel -r username
  • ایجاد گروه: groupadd groupname
  • اضافه کردن به گروه: usermod -aG groupname username
  • فایل‌های مهم: /etc/passwd، /etc/shadow، /etc/group، /etc/login.defs، /etc/default/useradd